From: Giovanni Campagna Date: Thu, 13 Feb 2014 15:12:59 +0000 (+0100) Subject: Magnifier: demote exceptions reading focus/caret position X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2799 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=6882273aa0ea8bfbe9c961e1a9f29d5ff71789d7;p=gnome-shell.git Magnifier: demote exceptions reading focus/caret position It's possible that the DBus call goes in timeout (which is bad, but unavoidable, given that atspi is synchronous) or fails because the component has been removed (race condition). Those errors are not dependent on gnome-shell, but on faulty applications (mostly). If they happen, log a debug message and continue. https://bugzilla.gnome.org/show_bug.cgi?id=724305 --- diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js index 81e3553a4..b02b1146c 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js @@ -719,7 +719,14 @@ const ZoomRegion = new Lang.Class({ let component = event.source.get_component_iface(); if (!component || event.detail1 != 1) return; - let extents = component.get_extents(Atspi.CoordType.SCREEN); + let extents; + try { + extents = component.get_extents(Atspi.CoordType.SCREEN); + } catch(e) { + log('Failed to read extents of focused component: ' + e.message); + return; + } + [this._xFocus, this._yFocus] = [extents.x + (extents.width / 2), extents.y + (extents.height / 2)]; this._centerFromFocusPosition(); @@ -729,7 +736,14 @@ const ZoomRegion = new Lang.Class({ let text = event.source.get_text_iface(); if (!text) return; - let extents = text.get_character_extents(text.get_caret_offset(), 0); + let extents; + try { + extents = text.get_character_extents(text.get_caret_offset(), 0); + } catch(e) { + log('Failed to read extents of text caret: ' + e.message); + return; + } + [this._xCaret, this._yCaret] = [extents.x, extents.y]; this._centerFromCaretPosition(); },